/**
 *
 */

import javax.swing.*;
import java.awt.*;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

public class PlaceholderTextField extends JTextField implements FocusListener {
    private String placeholder;

    public PlaceholderTextField(String placeholder) {
        this.placeholder = placeholder;
        setForeground(Color.GRAY); // 设置默认颜色为灰色
        setFont(new Font(getFont().getName(), Font.ITALIC, getFont().getSize())); // 设置默认字体为斜体

        addFocusListener(this); // 添加焦点事件监听器

        setText(placeholder); // 设置初始文本为提示文本
    }

    @Override
    public void focusGained(FocusEvent e) {
        if (getText().equals(placeholder)) {
            setText(""); // 当焦点获得时，清空文本框
            setForeground(Color.BLACK); // 设置文本颜色为黑色
            setFont(new Font(getFont().getName(), Font.PLAIN, getFont().getSize())); // 设置字体为普通
        }
    }

    @Override
    public void focusLost(FocusEvent e) {
        if (getText().isEmpty()) {
            setText(placeholder); // 当焦点失去时，设置文本框为提示文本
            setForeground(Color.GRAY); // 设置文本颜色为灰色
            setFont(new Font(getFont().getName(), Font.ITALIC, getFont().getSize())); // 设置字体为斜体
        }
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Placeholder Text Field");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        PlaceholderTextField textField = new PlaceholderTextField("Enter text here...");
        frame.getContentPane().add(textField, BorderLayout.CENTER);

        frame.setSize(300, 150);
        frame.setVisible(true);
    }
}
